/*
 ============================================================================
 Page	     : 423-424
 Name        : reverse.c
 Date	     : 20210407
 Author      : Hbue 18060333
 Copyright   : Your copyright notice
 Description : 倒序显示文件的内容
 ============================================================================
 */

#include <stdio.h>
#include <stdlib.h>
#define CNTL_Z '\032'		/* DOS文本文件中的文件结尾标记 */
#define SLEN 81

int main(void)
{
	char file[SLEN];
	char ch = 0;
	FILE *fp = NULL;
	long last = 0;

	puts("Enter the name of the file to be processed:");
	scanf("%80s", file);
	if((fp = fopen(file,"rb")) == NULL)
	{										/* 只读模式 */
		printf("reverse can't open %s\n", file);
		exit(EXIT_FAILURE);
	}

	fseek(fp, 0L, SEEK_END);				/* 定位到文件末尾 */
	last = ftell(fp);
	for(long count = 1L;count <= last; count++)
	{
		fseek(fp, -count, SEEK_END);		/* 回退 */
		ch = getc(fp);
		if(ch != CNTL_Z && ch != '\r')		/* MS-DOS文件 */
		{
			putchar(ch);
		}
	}
	putchar('\n');
	fclose(fp);

	return 0;
}

